package com.vains.system.util;

import com.vains.enumeration.ResultEnum;
import com.vains.system.model.Result;

/**
 * 响应帮助类
 *
 * @author vains
 * @version 1.0
 * @since 2020/6/3 17:08
 **/
public class ResultUtils {

    /**
     * 默认 操作成功响应 携带数据
     * @param data 响应数据
     * @param <T> 响应数据类型
     * @return 返回统一响应类
     */
    public static <T> Result<T> success(T data) {
        return new Result<>(ResultEnum.SUCCESS.getCode(), true, ResultEnum.SUCCESS.getMessage(), data);
    }

    /**
     * 默认 操作成功响应 携带数据
     * @param message 自定义响应消息
     * @param data 响应数据
     * @param <T> 响应数据类型
     * @return 返回统一响应类
     */
    public static <T> Result<T> success(String message, T data) {
        return new Result<>(ResultEnum.SUCCESS.getCode(), true, message, data);
    }

    /**
     * 默认 操作成功响应
     * @return 返回统一响应类
     */
    public static Result<String> success() {
        return new Result<>(ResultEnum.SUCCESS.getCode(), true, ResultEnum.SUCCESS.getMessage(), null);
    }

    /**
     * 默认 操作失败响应
     * @return 返回统一响应类
     */
    public static Result<String> error() {
        return new Result<>(ResultEnum.ERROR.getCode(), false, ResultEnum.ERROR.getMessage(), null);
    }

    /**
     * 默认 操作失败响应
     * @return 返回统一响应类
     */
    public static Result<String> error(String message) {
        return new Result<>(ResultEnum.ERROR.getCode(), Boolean.FALSE, message, null);
    }

    /**
     * 默认 操作失败响应
     * @return 返回统一响应类
     */
    public static <T> Result<T> error(String message, T data) {
        return new Result<>(ResultEnum.ERROR.getCode(), Boolean.FALSE, message, data);
    }

}
